GtkActionHelper: two small fixups in _set_target_value()
authorRyan Lortie <desrt@desrt.ca>
Wed, 22 Aug 2012 04:54:57 +0000 (00:54 -0400)
committerRyan Lortie <desrt@desrt.ca>
Wed, 22 Aug 2012 04:54:57 +0000 (00:54 -0400)
First, ensure we always consume floating values, as documented.

Second (and more serious), don't try to query the action if the
action name is not set yet.  This will cause crashes...

gtk/gtkactionhelper.c

index 6047a43cf98d5017772fba68e89ecba25a7d4785..a3a0c46a0762f761e874a1582e60782c6aef318f 100644 (file)
@@ -523,7 +523,10 @@ gtk_action_helper_set_action_target_value (GtkActionHelper *helper,
     return;
 
   if (target_value && helper->target && g_variant_equal (target_value, helper->target))
-    return;
+    {
+      g_variant_unref (g_variant_ref_sink (target_value));
+      return;
+    }
 
   if (helper->target)
     {
@@ -534,6 +537,10 @@ gtk_action_helper_set_action_target_value (GtkActionHelper *helper,
   if (target_value)
     helper->target = g_variant_ref_sink (target_value);
 
+  /* The action_name has not yet been set.  Don't do anything yet. */
+  if (helper->action_name == NULL)
+    return;
+
   was_enabled = helper->enabled;
   was_active = helper->active;